<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Taskflow Handbook</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="https://taskflow.github.io/">Taskflow</a>
   &#160;<span id="projectnumber">3.0.0-Master-Branch</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classtf_1_1Taskflow.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classtf_1_1Taskflow-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">tf::Taskflow Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>main entry to create a task dependency graph  
 <a href="classtf_1_1Taskflow.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="core_2taskflow_8hpp_source.html">taskflow.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for tf::Taskflow:</div>
<div class="dyncontent">
<div class="center"><img src="classtf_1_1Taskflow__inherit__graph.png" border="0" usemap="#tf_1_1Taskflow_inherit__map" alt="Inheritance graph"/></div>
<map name="tf_1_1Taskflow_inherit__map" id="tf_1_1Taskflow_inherit__map">
<area shape="rect" id="node2" href="classtf_1_1FlowBuilder.html" title="building methods of a task dependency graph " alt="" coords="5,5,111,31"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for tf::Taskflow:</div>
<div class="dyncontent">
<div class="center"><img src="classtf_1_1Taskflow__coll__graph.png" border="0" usemap="#tf_1_1Taskflow_coll__map" alt="Collaboration graph"/></div>
<map name="tf_1_1Taskflow_coll__map" id="tf_1_1Taskflow_coll__map">
<area shape="rect" id="node2" href="classtf_1_1FlowBuilder.html" title="building methods of a task dependency graph " alt="" coords="5,5,111,31"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7242a74dcb16731b4e40816647b93305"><td class="memItemLeft" align="right" valign="top"><a id="a7242a74dcb16731b4e40816647b93305"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a7242a74dcb16731b4e40816647b93305">Taskflow</a> (const <a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;<a class="el" href="classtf_1_1Taskflow.html#ad5706e5819aa01a63c4aa2e3485546b9">name</a>)</td></tr>
<tr class="memdesc:a7242a74dcb16731b4e40816647b93305"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a taskflow with the given name <br /></td></tr>
<tr class="separator:a7242a74dcb16731b4e40816647b93305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade7fc641d136a3f8c96682c08040626a"><td class="memItemLeft" align="right" valign="top"><a id="ade7fc641d136a3f8c96682c08040626a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#ade7fc641d136a3f8c96682c08040626a">Taskflow</a> ()</td></tr>
<tr class="memdesc:ade7fc641d136a3f8c96682c08040626a"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a taskflow <br /></td></tr>
<tr class="separator:ade7fc641d136a3f8c96682c08040626a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00325e9799c833b75455ba1407b2695c"><td class="memItemLeft" align="right" valign="top"><a id="a00325e9799c833b75455ba1407b2695c"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a00325e9799c833b75455ba1407b2695c">~Taskflow</a> ()</td></tr>
<tr class="memdesc:a00325e9799c833b75455ba1407b2695c"><td class="mdescLeft">&#160;</td><td class="mdescRight">destroy the taskflow (virtual call) <br /></td></tr>
<tr class="separator:a00325e9799c833b75455ba1407b2695c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4725d8ea5ff7595d9d71593360538e00"><td class="memTemplParams" colspan="2"><a id="a4725d8ea5ff7595d9d71593360538e00"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a4725d8ea5ff7595d9d71593360538e00"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a4725d8ea5ff7595d9d71593360538e00">dump</a> (T &amp;ostream) const</td></tr>
<tr class="memdesc:a4725d8ea5ff7595d9d71593360538e00"><td class="mdescLeft">&#160;</td><td class="mdescRight">dumps the taskflow to a DOT format through an output stream that defines the stream insertion operator <code>&lt;&lt;</code> <br /></td></tr>
<tr class="separator:a4725d8ea5ff7595d9d71593360538e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c4900da1831dce708664a06b3e3a3fb"><td class="memItemLeft" align="right" valign="top"><a id="a9c4900da1831dce708664a06b3e3a3fb"></a>
<a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a9c4900da1831dce708664a06b3e3a3fb">dump</a> () const</td></tr>
<tr class="memdesc:a9c4900da1831dce708664a06b3e3a3fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">dumps the taskflow to a <a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> of DOT format <br /></td></tr>
<tr class="separator:a9c4900da1831dce708664a06b3e3a3fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4f03bca084deb5c2228ac8936d33649"><td class="memItemLeft" align="right" valign="top"><a id="af4f03bca084deb5c2228ac8936d33649"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#af4f03bca084deb5c2228ac8936d33649">num_tasks</a> () const</td></tr>
<tr class="memdesc:af4f03bca084deb5c2228ac8936d33649"><td class="mdescLeft">&#160;</td><td class="mdescRight">queries the number of tasks in the taskflow <br /></td></tr>
<tr class="separator:af4f03bca084deb5c2228ac8936d33649"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a224301842d94c44fd7fe99d8ac2ba241"><td class="memItemLeft" align="right" valign="top"><a id="a224301842d94c44fd7fe99d8ac2ba241"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a224301842d94c44fd7fe99d8ac2ba241">empty</a> () const</td></tr>
<tr class="memdesc:a224301842d94c44fd7fe99d8ac2ba241"><td class="mdescLeft">&#160;</td><td class="mdescRight">queries the emptiness of the taskflow <br /></td></tr>
<tr class="separator:a224301842d94c44fd7fe99d8ac2ba241"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5706e5819aa01a63c4aa2e3485546b9"><td class="memItemLeft" align="right" valign="top"><a id="ad5706e5819aa01a63c4aa2e3485546b9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#ad5706e5819aa01a63c4aa2e3485546b9">name</a> (const <a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;)</td></tr>
<tr class="memdesc:ad5706e5819aa01a63c4aa2e3485546b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets the name of the taskflow <br /></td></tr>
<tr class="separator:ad5706e5819aa01a63c4aa2e3485546b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a911edd95acc1322433bddfcfeaf2ccb0"><td class="memItemLeft" align="right" valign="top"><a id="a911edd95acc1322433bddfcfeaf2ccb0"></a>
const <a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a911edd95acc1322433bddfcfeaf2ccb0">name</a> () const</td></tr>
<tr class="memdesc:a911edd95acc1322433bddfcfeaf2ccb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">queries the name of the taskflow <br /></td></tr>
<tr class="separator:a911edd95acc1322433bddfcfeaf2ccb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f00bbe72a1553c9656ecae4d98bb9af"><td class="memItemLeft" align="right" valign="top"><a id="a1f00bbe72a1553c9656ecae4d98bb9af"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a1f00bbe72a1553c9656ecae4d98bb9af">clear</a> ()</td></tr>
<tr class="memdesc:a1f00bbe72a1553c9656ecae4d98bb9af"><td class="mdescLeft">&#160;</td><td class="mdescRight">clears the associated task dependency graph <br /></td></tr>
<tr class="separator:a1f00bbe72a1553c9656ecae4d98bb9af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6350d0d6653ae9ae7b94c35e42fffe07"><td class="memTemplParams" colspan="2">template&lt;typename V &gt; </td></tr>
<tr class="memitem:a6350d0d6653ae9ae7b94c35e42fffe07"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1Taskflow.html#a6350d0d6653ae9ae7b94c35e42fffe07">for_each_task</a> (V &amp;&amp;visitor) const</td></tr>
<tr class="memdesc:a6350d0d6653ae9ae7b94c35e42fffe07"><td class="mdescLeft">&#160;</td><td class="mdescRight">applies an visitor callable to each task in the taskflow  <a href="#a6350d0d6653ae9ae7b94c35e42fffe07">More...</a><br /></td></tr>
<tr class="separator:a6350d0d6653ae9ae7b94c35e42fffe07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classtf_1_1FlowBuilder"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtf_1_1FlowBuilder')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename C , std::enable_if_t&lt; is_static_task_v&lt; C &gt;, void &gt; *  = nullptr&gt; </td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">emplace</a> (C &amp;&amp;callable)</td></tr>
<tr class="memdesc:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates a static task  <a href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">More...</a><br /></td></tr>
<tr class="separator:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename C , std::enable_if_t&lt; is_dynamic_task_v&lt; C &gt;, void &gt; *  = nullptr&gt; </td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">emplace</a> (C &amp;&amp;callable)</td></tr>
<tr class="memdesc:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates a dynamic task  <a href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">More...</a><br /></td></tr>
<tr class="separator:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename C , std::enable_if_t&lt; is_condition_task_v&lt; C &gt;, void &gt; *  = nullptr&gt; </td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">emplace</a> (C &amp;&amp;callable)</td></tr>
<tr class="memdesc:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates a condition task  <a href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">More...</a><br /></td></tr>
<tr class="separator:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f6118326ad434f6c839007a1a79fe1b inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename... C, std::enable_if_t&lt;(sizeof...(C)&gt; 1&gt; </td></tr>
<tr class="memitem:a1f6118326ad434f6c839007a1a79fe1b inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a1f6118326ad434f6c839007a1a79fe1b">emplace</a> (C &amp;&amp;... callables)</td></tr>
<tr class="memdesc:a1f6118326ad434f6c839007a1a79fe1b inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates multiple tasks from a list of callable objects  <a href="classtf_1_1FlowBuilder.html#a1f6118326ad434f6c839007a1a79fe1b">More...</a><br /></td></tr>
<tr class="separator:a1f6118326ad434f6c839007a1a79fe1b inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a01192f4f92c15380a4f259e2fec2d9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a0a01192f4f92c15380a4f259e2fec2d9">composed_of</a> (<a class="el" href="classtf_1_1Taskflow.html">Taskflow</a> &amp;taskflow)</td></tr>
<tr class="memdesc:a0a01192f4f92c15380a4f259e2fec2d9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates a module task from a taskflow  <a href="classtf_1_1FlowBuilder.html#a0a01192f4f92c15380a4f259e2fec2d9">More...</a><br /></td></tr>
<tr class="separator:a0a01192f4f92c15380a4f259e2fec2d9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acab0b4ac82260f47fdb36a3244ee3aaf inherit pub_methods_classtf_1_1FlowBuilder"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#acab0b4ac82260f47fdb36a3244ee3aaf">placeholder</a> ()</td></tr>
<tr class="memdesc:acab0b4ac82260f47fdb36a3244ee3aaf inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates an empty task  <a href="classtf_1_1FlowBuilder.html#acab0b4ac82260f47fdb36a3244ee3aaf">More...</a><br /></td></tr>
<tr class="separator:acab0b4ac82260f47fdb36a3244ee3aaf inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename C , std::enable_if_t&lt; is_cudaflow_task_v&lt; C &gt;, void &gt; *  = nullptr&gt; </td></tr>
<tr class="memitem:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">emplace</a> (C &amp;&amp;callable)</td></tr>
<tr class="memdesc:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates a cudaflow task on the default device 0  <a href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">More...</a><br /></td></tr>
<tr class="separator:a60d7a666cab71ecfa3010b2efb0d6b57 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdf47fd1a358fb64f8c1b89e2a393169 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename C , typename D , std::enable_if_t&lt; is_cudaflow_task_v&lt; C &gt;, void &gt; *  = nullptr&gt; </td></tr>
<tr class="memitem:afdf47fd1a358fb64f8c1b89e2a393169 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#afdf47fd1a358fb64f8c1b89e2a393169">emplace_on</a> (C &amp;&amp;callable, D &amp;&amp;device)</td></tr>
<tr class="memdesc:afdf47fd1a358fb64f8c1b89e2a393169 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">creates a cudaflow task on the given device  <a href="classtf_1_1FlowBuilder.html#afdf47fd1a358fb64f8c1b89e2a393169">More...</a><br /></td></tr>
<tr class="separator:afdf47fd1a358fb64f8c1b89e2a393169 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90f3d9b9d6fcf4df8e7d7878dfdd130d inherit pub_methods_classtf_1_1FlowBuilder"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a90f3d9b9d6fcf4df8e7d7878dfdd130d">linearize</a> (<a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a> &gt; &amp;tasks)</td></tr>
<tr class="memdesc:a90f3d9b9d6fcf4df8e7d7878dfdd130d inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">adds adjacent dependency links to a linear list of tasks  <a href="classtf_1_1FlowBuilder.html#a90f3d9b9d6fcf4df8e7d7878dfdd130d">More...</a><br /></td></tr>
<tr class="separator:a90f3d9b9d6fcf4df8e7d7878dfdd130d inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ec89b554d15ad5fb96f4fdb10dbbb16 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a4ec89b554d15ad5fb96f4fdb10dbbb16">linearize</a> (<a class="elRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/utility/initializer_list.html">std::initializer_list</a>&lt; <a class="el" href="classtf_1_1Task.html">Task</a> &gt; tasks)</td></tr>
<tr class="memdesc:a4ec89b554d15ad5fb96f4fdb10dbbb16 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">adds adjacent dependency links to a linear list of tasks  <a href="classtf_1_1FlowBuilder.html#a4ec89b554d15ad5fb96f4fdb10dbbb16">More...</a><br /></td></tr>
<tr class="separator:a4ec89b554d15ad5fb96f4fdb10dbbb16 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a564252001be679600b20ca9ed9920f6a inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename C &gt; </td></tr>
<tr class="memitem:a564252001be679600b20ca9ed9920f6a inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a564252001be679600b20ca9ed9920f6a">for_each</a> (B &amp;&amp;first, E &amp;&amp;last, C &amp;&amp;callable)</td></tr>
<tr class="memdesc:a564252001be679600b20ca9ed9920f6a inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-for task  <a href="classtf_1_1FlowBuilder.html#a564252001be679600b20ca9ed9920f6a">More...</a><br /></td></tr>
<tr class="separator:a564252001be679600b20ca9ed9920f6a inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a294c4fa23d74b82e581b8cfd33acdf inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename C , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a1a294c4fa23d74b82e581b8cfd33acdf inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a1a294c4fa23d74b82e581b8cfd33acdf">for_each_guided</a> (B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a1a294c4fa23d74b82e581b8cfd33acdf inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-for task using the guided partition algorithm  <a href="classtf_1_1FlowBuilder.html#a1a294c4fa23d74b82e581b8cfd33acdf">More...</a><br /></td></tr>
<tr class="separator:a1a294c4fa23d74b82e581b8cfd33acdf inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c044a80450742bf6927d0c343c23853 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename C , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a5c044a80450742bf6927d0c343c23853 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a5c044a80450742bf6927d0c343c23853">for_each_dynamic</a> (B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a5c044a80450742bf6927d0c343c23853 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-for task using the dynamic partition algorithm  <a href="classtf_1_1FlowBuilder.html#a5c044a80450742bf6927d0c343c23853">More...</a><br /></td></tr>
<tr class="separator:a5c044a80450742bf6927d0c343c23853 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0af7e250c4ad1ae98bf6e0249b98589f inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename C , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a0af7e250c4ad1ae98bf6e0249b98589f inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a0af7e250c4ad1ae98bf6e0249b98589f">for_each_static</a> (B &amp;&amp;beg, E &amp;&amp;end, C &amp;&amp;callable, H &amp;&amp;chunk_size=0)</td></tr>
<tr class="memdesc:a0af7e250c4ad1ae98bf6e0249b98589f inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-for task using the dynamic partition algorithm  <a href="classtf_1_1FlowBuilder.html#a0af7e250c4ad1ae98bf6e0249b98589f">More...</a><br /></td></tr>
<tr class="separator:a0af7e250c4ad1ae98bf6e0249b98589f inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8417b211b18bb1e0f45a049331f084d inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename S , typename C &gt; </td></tr>
<tr class="memitem:ab8417b211b18bb1e0f45a049331f084d inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#ab8417b211b18bb1e0f45a049331f084d">for_each_index</a> (B &amp;&amp;first, E &amp;&amp;last, S &amp;&amp;step, C &amp;&amp;callable)</td></tr>
<tr class="memdesc:ab8417b211b18bb1e0f45a049331f084d inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs an index-based parallel-for task  <a href="classtf_1_1FlowBuilder.html#ab8417b211b18bb1e0f45a049331f084d">More...</a><br /></td></tr>
<tr class="separator:ab8417b211b18bb1e0f45a049331f084d inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a942449afd25e656b9e14cb526cbd8ad2 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename S , typename C , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a942449afd25e656b9e14cb526cbd8ad2 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a942449afd25e656b9e14cb526cbd8ad2">for_each_index_guided</a> (B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a942449afd25e656b9e14cb526cbd8ad2 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs an index-based parallel-for task using the guided partition algorithm.  <a href="classtf_1_1FlowBuilder.html#a942449afd25e656b9e14cb526cbd8ad2">More...</a><br /></td></tr>
<tr class="separator:a942449afd25e656b9e14cb526cbd8ad2 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930d0343226874d1d40b9e230cccdd52 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename S , typename C , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a930d0343226874d1d40b9e230cccdd52 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a930d0343226874d1d40b9e230cccdd52">for_each_index_dynamic</a> (B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a930d0343226874d1d40b9e230cccdd52 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs an index-based parallel-for task using the dynamic partition algorithm.  <a href="classtf_1_1FlowBuilder.html#a930d0343226874d1d40b9e230cccdd52">More...</a><br /></td></tr>
<tr class="separator:a930d0343226874d1d40b9e230cccdd52 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f204c670ca5857e5527d6000ba73c4 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename S , typename C , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a71f204c670ca5857e5527d6000ba73c4 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a71f204c670ca5857e5527d6000ba73c4">for_each_index_static</a> (B &amp;&amp;beg, E &amp;&amp;end, S &amp;&amp;step, C &amp;&amp;callable, H &amp;&amp;chunk_size=0)</td></tr>
<tr class="memdesc:a71f204c670ca5857e5527d6000ba73c4 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs an index-based parallel-for task using the static partition algorithm.  <a href="classtf_1_1FlowBuilder.html#a71f204c670ca5857e5527d6000ba73c4">More...</a><br /></td></tr>
<tr class="separator:a71f204c670ca5857e5527d6000ba73c4 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad999cd75045db225a42d5881d6db1223 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename O &gt; </td></tr>
<tr class="memitem:ad999cd75045db225a42d5881d6db1223 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#ad999cd75045db225a42d5881d6db1223">reduce</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop)</td></tr>
<tr class="memdesc:ad999cd75045db225a42d5881d6db1223 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-reduce task  <a href="classtf_1_1FlowBuilder.html#ad999cd75045db225a42d5881d6db1223">More...</a><br /></td></tr>
<tr class="separator:ad999cd75045db225a42d5881d6db1223 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10f13b39b02038c6850aca787923d668 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename O , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a10f13b39b02038c6850aca787923d668 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a10f13b39b02038c6850aca787923d668">reduce_guided</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a10f13b39b02038c6850aca787923d668 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-reduce task using the guided partition algorithm  <a href="classtf_1_1FlowBuilder.html#a10f13b39b02038c6850aca787923d668">More...</a><br /></td></tr>
<tr class="separator:a10f13b39b02038c6850aca787923d668 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83ec799606b7526787761acf27885b00 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename O , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a83ec799606b7526787761acf27885b00 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a83ec799606b7526787761acf27885b00">reduce_dynamic</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a83ec799606b7526787761acf27885b00 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-reduce task using the dynamic partition algorithm  <a href="classtf_1_1FlowBuilder.html#a83ec799606b7526787761acf27885b00">More...</a><br /></td></tr>
<tr class="separator:a83ec799606b7526787761acf27885b00 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54e36c916ae7dd88bd079d3fd49119f9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename O , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a54e36c916ae7dd88bd079d3fd49119f9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a54e36c916ae7dd88bd079d3fd49119f9">reduce_static</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, O &amp;&amp;bop, H &amp;&amp;chunk_size=0)</td></tr>
<tr class="memdesc:a54e36c916ae7dd88bd079d3fd49119f9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel-reduce task using the static partition algorithm  <a href="classtf_1_1FlowBuilder.html#a54e36c916ae7dd88bd079d3fd49119f9">More...</a><br /></td></tr>
<tr class="separator:a54e36c916ae7dd88bd079d3fd49119f9 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8d03524f15292610ebee63d53b89579 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename BOP , typename UOP &gt; </td></tr>
<tr class="memitem:ad8d03524f15292610ebee63d53b89579 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#ad8d03524f15292610ebee63d53b89579">transform_reduce</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, BOP &amp;&amp;bop, UOP &amp;&amp;uop)</td></tr>
<tr class="memdesc:ad8d03524f15292610ebee63d53b89579 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel transform-reduce task  <a href="classtf_1_1FlowBuilder.html#ad8d03524f15292610ebee63d53b89579">More...</a><br /></td></tr>
<tr class="separator:ad8d03524f15292610ebee63d53b89579 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa102a40672a331643944cb17c2377118 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename BOP , typename UOP , typename H  = size_t&gt; </td></tr>
<tr class="memitem:aa102a40672a331643944cb17c2377118 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#aa102a40672a331643944cb17c2377118">transform_reduce_guided</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, BOP &amp;&amp;bop, UOP &amp;&amp;uop, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:aa102a40672a331643944cb17c2377118 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel transform-reduce task using the guided partition algorithm  <a href="classtf_1_1FlowBuilder.html#aa102a40672a331643944cb17c2377118">More...</a><br /></td></tr>
<tr class="separator:aa102a40672a331643944cb17c2377118 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a562e253028680b61de95e305c0224d91 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename BOP , typename UOP , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a562e253028680b61de95e305c0224d91 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a562e253028680b61de95e305c0224d91">transform_reduce_static</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, BOP &amp;&amp;bop, UOP &amp;&amp;uop, H &amp;&amp;chunk_size=0)</td></tr>
<tr class="memdesc:a562e253028680b61de95e305c0224d91 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel transform-reduce task using the static partition algorithm  <a href="classtf_1_1FlowBuilder.html#a562e253028680b61de95e305c0224d91">More...</a><br /></td></tr>
<tr class="separator:a562e253028680b61de95e305c0224d91 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fb87774919f4a570ac505cdcda48249 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplParams" colspan="2">template&lt;typename B , typename E , typename T , typename BOP , typename UOP , typename H  = size_t&gt; </td></tr>
<tr class="memitem:a6fb87774919f4a570ac505cdcda48249 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtf_1_1Task.html">Task</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a6fb87774919f4a570ac505cdcda48249">transform_reduce_dynamic</a> (B &amp;&amp;first, E &amp;&amp;last, T &amp;init, BOP &amp;&amp;bop, UOP &amp;&amp;uop, H &amp;&amp;chunk_size=1)</td></tr>
<tr class="memdesc:a6fb87774919f4a570ac505cdcda48249 inherit pub_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a STL-styled parallel transform-reduce task using the dynamic partition algorithm  <a href="classtf_1_1FlowBuilder.html#a6fb87774919f4a570ac505cdcda48249">More...</a><br /></td></tr>
<tr class="separator:a6fb87774919f4a570ac505cdcda48249 inherit pub_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:acd2b8699ab7559c0da687cd775e2c778"><td class="memItemLeft" align="right" valign="top"><a id="acd2b8699ab7559c0da687cd775e2c778"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>Topology</b></td></tr>
<tr class="separator:acd2b8699ab7559c0da687cd775e2c778"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a763b2f90bc53f92d680a635fe28e858e"><td class="memItemLeft" align="right" valign="top"><a id="a763b2f90bc53f92d680a635fe28e858e"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>Executor</b></td></tr>
<tr class="separator:a763b2f90bc53f92d680a635fe28e858e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61184f9bd9c801d0a5eccecfdbddc641"><td class="memItemLeft" align="right" valign="top"><a id="a61184f9bd9c801d0a5eccecfdbddc641"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>FlowBuilder</b></td></tr>
<tr class="separator:a61184f9bd9c801d0a5eccecfdbddc641"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classtf_1_1FlowBuilder"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classtf_1_1FlowBuilder')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td></tr>
<tr class="memitem:a67d023d5493da1594a1d2eaea89da179 inherit pro_methods_classtf_1_1FlowBuilder"><td class="memItemLeft" align="right" valign="top"><a id="a67d023d5493da1594a1d2eaea89da179"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a67d023d5493da1594a1d2eaea89da179">FlowBuilder</a> (Graph &amp;graph)</td></tr>
<tr class="memdesc:a67d023d5493da1594a1d2eaea89da179 inherit pro_methods_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a flow builder with a graph <br /></td></tr>
<tr class="separator:a67d023d5493da1594a1d2eaea89da179 inherit pro_methods_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classtf_1_1FlowBuilder"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classtf_1_1FlowBuilder')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classtf_1_1FlowBuilder.html">tf::FlowBuilder</a></td></tr>
<tr class="memitem:a9404a57d9d37a4d49d20b686e4e5f68f inherit pro_attribs_classtf_1_1FlowBuilder"><td class="memItemLeft" align="right" valign="top"><a id="a9404a57d9d37a4d49d20b686e4e5f68f"></a>
Graph &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtf_1_1FlowBuilder.html#a9404a57d9d37a4d49d20b686e4e5f68f">_graph</a></td></tr>
<tr class="memdesc:a9404a57d9d37a4d49d20b686e4e5f68f inherit pro_attribs_classtf_1_1FlowBuilder"><td class="mdescLeft">&#160;</td><td class="mdescRight">associated graph object <br /></td></tr>
<tr class="separator:a9404a57d9d37a4d49d20b686e4e5f68f inherit pro_attribs_classtf_1_1FlowBuilder"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>main entry to create a task dependency graph </p>
<p>A taskflow manages a task dependency graph where each task represents a callable object (e.g., <a href="https://en.cppreference.com/w/cpp/language/lambda">lambda</a>, <a href="https://en.cppreference.com/w/cpp/utility/functional/function">std::function</a>) and an edge represents a dependency between two tasks. A task is one of the following five types:</p>
<ol type="1">
<li>static task: the callable constructible from <code>std::function&lt;void()&gt;</code> </li>
<li>dynamic task: the callable constructible from <code>std::function&lt;void(tf::Subflow&amp;)&gt;</code> </li>
<li>condition task: the callable constructible from <code>std::function&lt;int()&gt;</code> </li>
<li>module task: the task constructed from <a class="el" href="classtf_1_1FlowBuilder.html#a0a01192f4f92c15380a4f259e2fec2d9" title="creates a module task from a taskflow ">tf::Taskflow::composed_of</a></li>
<li>cudaFlow task: the callable constructible from <code>std::function&lt;void(tf::cudaFlow)&gt;</code> or <code>std::function&lt;void(tf::cudaFlowCapturer)&gt;</code> </li>
</ol>
<p>The following example creates a simple taskflow graph of four static tasks, <code>A</code>, <code>B</code>, <code>C</code>, and <code>D</code>, where <code>A</code> runs before <code>B</code> and <code>C</code> and <code>D</code> runs after <code>B</code> and <code>C</code>.</p>
<div class="fragment"><div class="line"><a class="code" href="classtf_1_1Executor.html">tf::Executor</a> executor;</div><div class="line"><a class="code" href="classtf_1_1Taskflow.html">tf::Taskflow</a> taskflow(<span class="stringliteral">&quot;simple&quot;</span>);</div><div class="line"></div><div class="line"><span class="keyword">auto</span> [A, B, C, D] = taskflow.<a class="code" href="classtf_1_1FlowBuilder.html#a60d7a666cab71ecfa3010b2efb0d6b57">emplace</a>(</div><div class="line">  []() { <a class="codeRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;TaskA\n&quot;</span>; },</div><div class="line">  []() { <a class="codeRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;TaskB\n&quot;</span>; },</div><div class="line">  []() { <a class="codeRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;TaskC\n&quot;</span>; },</div><div class="line">  []() { <a class="codeRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;TaskD\n&quot;</span>; }</div><div class="line">);</div><div class="line"></div><div class="line">A.<a class="code" href="classtf_1_1Task.html#a8c78c453295a553c1c016e4062da8588">precede</a>(B, C);  <span class="comment">// A runs before B and C</span></div><div class="line">D.<a class="code" href="classtf_1_1Task.html#a331b1b726555072e7c7d10941257f664">succeed</a>(B, C);  <span class="comment">// D runs after  B and C</span></div><div class="line">                                   </div><div class="line">executor.<a class="code" href="classtf_1_1Executor.html#a81f35d5b0a20ac0646447eb80d97c0aa">run</a>(taskflow).wait();     </div></div><!-- fragment --><p>Please refer to <a class="el" href="Cookbook.html">Cookbook</a> to learn more about each task type. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a6350d0d6653ae9ae7b94c35e42fffe07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6350d0d6653ae9ae7b94c35e42fffe07">&#9670;&nbsp;</a></span>for_each_task()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void tf::Taskflow::for_each_task </td>
          <td>(</td>
          <td class="paramtype">V &amp;&amp;&#160;</td>
          <td class="paramname"><em>visitor</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>applies an visitor callable to each task in the taskflow </p>
<p>The visitor is a callable that takes an argument of type <a class="el" href="classtf_1_1Task.html" title="handle to a node in a task dependency graph ">tf::Task</a> and returns nothing. The following example iterates each task in a taskflow and prints its name:</p>
<div class="fragment"><div class="line">taskflow.<a class="code" href="classtf_1_1Taskflow.html#a6350d0d6653ae9ae7b94c35e42fffe07">for_each_task</a>([](<a class="code" href="classtf_1_1Task.html">tf::Task</a> task){</div><div class="line">  <a class="codeRef" doxygen="/Users/twhuang/PhD/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml:http://en.cppreference.com/w/" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; task.<a class="code" href="classtf_1_1Task.html#a08ada0425b490997b6ff7f310107e5e3">name</a>() &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div><div class="line">});</div></div><!-- fragment --> 
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="core_2taskflow_8hpp_source.html">core/taskflow.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>tf</b></li><li class="navelem"><a class="el" href="classtf_1_1Taskflow.html">Taskflow</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
